home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Workbench / ToolManager / Source / Prefs / group.c < prev    next >
C/C++ Source or Header  |  1998-06-17  |  3KB  |  97 lines

  1. /*
  2.  * group.c  V3.1
  3.  *
  4.  * Class for TM config groups
  5.  *
  6.  * Copyright (C) 1990-98 Stefan Becker
  7.  *
  8.  * This source code is for educational purposes only. You may study it
  9.  * and copy ideas or algorithms from it for your own projects. It is
  10.  * not allowed to use any of the source codes (in full or in parts)
  11.  * in other programs. Especially it is not allowed to create variants
  12.  * of ToolManager or ToolManager-like programs from this source code.
  13.  *
  14.  */
  15.  
  16. #include "toolmanager.h"
  17.  
  18. /* Local data */
  19. static const char *TextTitle;
  20.  
  21. /* Group class instance data */
  22. struct GroupClassData {
  23.  ULONG gcd_Dummy;
  24. };
  25. #define TYPED_INST_DATA(cl, o) ((struct GroupClassData *) INST_DATA((cl), (o)))
  26.  
  27. /* Group class method: OM_NEW */
  28. #define DEBUGFUNCTION GroupClassNew
  29. static ULONG GroupClassNew(Class *cl, Object *obj, struct opSet *ops)
  30. {
  31.  GROUP_LOG((LOG1(Tags, "0x%08lx", ops->ops_AttrList),
  32.             PrintTagList(ops->ops_AttrList)))
  33.  
  34.  /* Create object */
  35.  if (obj = (Object *) DoSuperNew(cl, obj,
  36.                                        MUIA_Window_Title, TextTitle,
  37.                                        MUIA_HelpNode,     "GroupWindow",
  38.                                        TMA_Type,          TMOBJTYPE_GROUP,
  39.                                        TAG_MORE,          ops->ops_AttrList)) {
  40.  }
  41.  
  42.  GROUP_LOG(LOG1(Result, "0x%08lx", obj))
  43.  
  44.  /* Return pointer to created object */
  45.  return((ULONG) obj);
  46. }
  47.  
  48. /* Group class method dispatcher */
  49. #undef  DEBUGFUNCTION
  50. #define DEBUGFUNCTION GroupClassDispatcher
  51. __geta4 static ULONG GroupClassDispatcher(__a0 Class *cl, __a2 Object *obj,
  52.                                           __a1 Msg msg)
  53. {
  54.  ULONG rc;
  55.  
  56.  GROUP_LOG(LOG3(Arguments, "Class 0x%08lx Object 0x%08lx Msg 0x%08lx",
  57.                 cl, obj, msg))
  58.  
  59.  switch(msg->MethodID) {
  60.   /* BOOPSI methods */
  61.   case OM_NEW:
  62.    rc = GroupClassNew(cl, obj, (struct opSet *) msg);
  63.    break;
  64.  
  65.   /* TM methods */
  66.  
  67.   /* Unknown method -> delegate to SuperClass */
  68.   default:
  69.    rc = DoSuperMethodA(cl, obj, msg);
  70.    break;
  71.  }
  72.  
  73.  return(rc);
  74. }
  75.  
  76. /* Create Group class */
  77. #undef  DEBUGFUNCTION
  78. #define DEBUGFUNCTION CreateGroupClass
  79. struct MUI_CustomClass *CreateGroupClass(void)
  80. {
  81.  struct MUI_CustomClass *rc;
  82.  
  83.  /* Create class */
  84.  if (rc = MUI_CreateCustomClass(NULL, NULL, BaseClass,
  85.                                 sizeof(struct GroupClassData),
  86.                                 GroupClassDispatcher)) {
  87.  
  88.   /* Localize strings */
  89.   TextTitle = TranslateString(LOCALE_TEXT_GROUP_TITLE_STR,
  90.                               LOCALE_TEXT_GROUP_TITLE);
  91.  }
  92.  
  93.  GROUP_LOG(LOG1(Result, "0x%08lx", rc))
  94.  
  95.  return(rc);
  96. }
  97.